package BufferIO;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

/**
 * @Author: ylc
 * @Description:缓冲流也叫高效流，
 *  在创建流对象时，会创建一个内置的默认大小的缓冲区数组，通过缓冲区读写，减少系统IO次数，从而提高读写的效率。
 * @Date Created in 2022-04-27 12:39
 */
public class BufferedInputStreamDemo {
    /*
     java.io.BufferedInputStream extends InputStream
        BufferedInputStream:字节缓冲输入流,提高字节流的效率
    构造方法:
        BufferedInputStream(InputStream in) 创建一个 BufferedInputStream 并保存其参数，即输入流 in，以便将来使用。
        BufferedInputStream(InputStream in, int size) 创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数，即输入流 in，以便将来使用。
        参数:
            InputStream in:字节输入流
                传递FileInputStream,缓冲流会给FileInputStream增加一个缓冲区,提高FileInputStream的读取效率
            int size:指定缓冲流内部缓冲区的大小,不指定默认
     */
    public static void main(String[] args) throws IOException {
        java.io.BufferedInputStream bis = new java.io.BufferedInputStream(new FileInputStream("Study05\\a.txt"));
        //int read()从输入流中读取数据的下一个字节。
/*        int len = 0;//记录每次读取到的字节
        while((len = bis.read())!=-1){
            System.out.print((char)len);
        }*/

        //int read(byte[] b) 从输入流中读取一定数量的字节，并将其存储在缓冲区数组 b 中。
        byte[] bytes =new byte[1024];//存储每次读取的数据
        int len = 0; //记录每次读取的有效字节个数
        while((len = bis.read(bytes))!=-1){
            System.out.println(new String(bytes,0,len));
        }

        //4.释放资源
        bis.close();

    }
}
